package com.liuyc.lib.common.base

import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment

/**
 * BaseFragmentDialog
 *  layoutId 就是 fragment 的布局资源id
 * 基础类
 * 静态页，不涉及数据变更等操作的 纯UI 操作 可以不使用 MVVM 模式 直接继承这个类使用
 * 非静态，有数据变更操作 必须继承 ViewBaseDialogFragment
 * 刘隽
 */
abstract class BaseFragmentDialog(private val mContentLayoutId: Int) : DialogFragment() {


    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return if (mContentLayoutId != 0) {
            inflater.inflate(mContentLayoutId, container, false)
        } else null
    }


    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        initViewBefore()
        initView()
        initViewAfter()
    }

    override fun onStart() {
        super.onStart()

        if (isTransparent())
            dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))

        dialog?.setCanceledOnTouchOutside(isCanceledOnTouchOutside())
    }

    /**
     * 时候背景透明
     */
    fun isTransparent(): Boolean{
        return false
    }

    /**
     * 是否 取消触摸消失功能
     */
    fun isCanceledOnTouchOutside(): Boolean{
        return true
    }


    /**
     * 在initView 之前的操作
     * 此地  可以获取到 从其他页面传递的参数等
     */
    abstract fun initViewBefore()

    /**
     * 初始化 视图
     */
    abstract fun initView();

    /**
     * initView 之后的操作，
     * 可以设置 视图元素 需要的数据，监听方法等操作
     */
    abstract fun initViewAfter();


}